<?php
require_once('include/header.php');
require_once('dao/FactoryDAO.php');
require_once('vo/UsuarioVO.php');
require_once('search/UsuarioSearchCriteria.php');

/**
 * Business logic directly reflects the use cases. The business logic deals with VOs, 
 * modifies them according to the business requirements and uses DAOs to access the persistence layer. 
 * The business logic classes should provide means to retrieve information about errors that occurred.
 * 
 * @author dintech
 *
 */
Class UsuariosLogic {
	
	var $_POST;
	var $usuarioDAO;
	
	function UsuariosLogic($post){
		$this->$_POST = $post; 
		$this->usuarioDAO = FactoryDAO::getDao('UsuarioDAO');
	}
	
	function save($post){
		$usuarioVO = new UsuarioVO();
		$usuarioVO->setId($post['id']);
		$usuarioVO->setUsername($post['username']);
		$passw = $post['passw'];
		// solo setear passw si existe (ej. agregar nuevo usuario)
		if (($passw != null) && ($passw != ""))
			$usuarioVO->setPassw(md5($post['passw']));
		$usuarioVO->setRol($post['rol_llamadas'] . $post['rol_estacion'] . $post['rol_patrulla'] . $post['rol_comisariaMujer']. $post['rol_contravenciones']);
		if ( isset($post['id']) && $post['id'] != "" )
			return $this->usuarioDAO->update($usuarioVO);
		else 	
			return $this->usuarioDAO->save($usuarioVO);
	}

	function delete($id){
		return $this->usuarioDAO->delete($id);
	}
	
	function get($id){
		return $this->usuarioDAO->get($id);
	}
	
	function getByUsername($username){
		return $this->usuarioDAO->getByUsername($username);
	}	
	
	function find($usuarioSearchCriteria){
		return $this->usuarioDAO->find($usuarioSearchCriteria);
	}
	
    function count($usuarioSearchCriteria){
		return $this->usuarioDAO->count($usuarioSearchCriteria);
	}
	
	function changePassword($username, $post) {
	
		$usuarioDAO = $this->usuarioDAO->getByUsername($username);
		if ($usuarioDAO[passw] == md5($post['password'])) {		
			$usuarioVO = new UsuarioVO();
			$usuarioVO->setId($usuarioDAO[id]);
			$usuarioVO->setUsername($usuarioDAO[username]);
			$usuarioVO->setPassw(md5($post['newpassword']));
			$usuarioVO->setRol($usuarioDAO[rol]);
			return $this->usuarioDAO->save($usuarioVO);
		}
		else
			return "passw_not_match";
		
	}

}
?>